//-----------------------------------------------------------------------------
// Name: SharedConstants.h
// Auth: Dante Ratto, Paul Godfrey, and Rob Darty
// Desc: a repository for any constants that need to be shared across the app
//-----------------------------------------------------------------------------

#ifndef _SHAREDCONSTANTS_
#define _SHAREDCONSTANTS_

//-----------------------------------------------------------------------------
// Type Definitions:
//-----------------------------------------------------------------------------
typedef float tVector3f[3];
typedef float tVector6f[6];

//-----------------------------------------------------------------------------
// Constants
//-----------------------------------------------------------------------------
// Useful values
const float kPi = 3.14159265f;
const float k2Pi = 6.28318531f;
const float kDegreesToRadians = 0.0174532925f;
const float kMaxRandom = 30.0f;

//Bullet Speed m/s
const int kBulletSpeed = 50;

//Damage direction for hud
const int kDamageLeft = 3;
const int kDamageRight = 2;
const int kDamageBack = 1;
const int kDamageNone = 0;

//Vacination max dist (lifespan)
const float kVacDist = 3.0f;

//Player speed
const float kPlayerSpeed = 0.5f;

// Common colors:
const tVector3f kColorBlack = {0.0f, 0.0f, 0.0f};
const tVector3f kColorWhite = {1.0f, 1.0f, 1.0f};
const tVector6f kColorHuman = {0.86f, 0.72f, 0.53f, 0.0f, 0.0f, 0.0f}; 
const tVector6f kColorZombie = {0.0f, 0.6f, 0.0f, 1.0f, 0.0f, 0.0f}; //dark green skin and red eyes
const tVector6f kColorCow = {1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f};
const tVector6f kColorHumanVaccinated = {0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f};
const tVector6f kColorCowVaccinated = {0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f};

const tVector3f kColorWall = {0.54f, 0.27f, 0.07f};
const tVector3f kColorBox = {0.0f, 0.0f, 0.0f};
const tVector3f kColorBarn = {0.54f, 0.27f, 0.07f};

const tVector3f kBossPoint1 = {50.0f, 0.0f, 0.0f};
const tVector3f kBossPoint2 = {0.0f, 0.0f, -40.0f};
const tVector3f kBossPoint3 = {-50.0f, 0.0f, 0.0f};
const tVector3f kBossPoint4 = {0.0f, 0.0f, 40.0f};

//Timer on boss spawning zombies
const int kSpawnTimer = 7;

//Player collisions on?
const bool kplayCollisions = true;

// Animate type
enum eObjectType
{
	kPlayer,
	kHuman,
	kHumanVaccinated,
	kZombie,
	kCow,
	kCowVaccinated,
	kCowZombie,
	kDeadHuman,
	kBoss,
};

//Bounding type
enum eCollisionType
{
	kSphereHead,
	kSphereBody,
	kBoxCol,
};

//Inanimate type
enum eInanimateType
{
	kWall,
	kLeftWall,
	kRightWall,
	kFrontWall,
	kBackWall,
	kBox,
	kBarn,
	kTree,
	kPalmTree,
	kFence1,
	kFence2,
	kFence3,
	kFence4,
	kFence5,
	kFence6,
	kFence7,
	kFence8,
	kFence9,
	kFence10,
	kFence11,
	kFence12,
	kFence,
	kTownCenterWall,
	kGate,

};

//Gun type
enum eGunType
{
	Vaccine = 1,
	Melee2,
	Pistol,
	Rifle,
	Shotgun,
};


const int kminX = 1;
const int kmaxX = 2;
const int kminZ = 3;
const int kmaxZ = 4;

const int kswapTime = 30;
const int klistTime = 10;

#endif